# -*- mode:python -*-

# Copyright (c) 2009-2010 HIT Microelectronic Center
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met: redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer;
# redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution;
# neither the name of the copyright holders nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Authors: Gou Pengfei
#          Jin Yinghan
#

Import('*')

if 'SimpleEdgeCPU' in env['CPU_MODELS'] or 'DistributedEdgeCPU' in env['CPU_MODELS']:
    Source('2bit_local.cc')
    Source('btb.cc')
    Source('ibtb_tonb.cc')
    Source('ctb.cc')

    if 'SimpleEdgeCPU' in env['CPU_MODELS']:
        Source('ras.cc')
        Source('tournament.cc')
        Source('perceptron.cc')
        Source('tournament_perceptron.cc')
        Source('piecewise.cc')
	Source('piecewise_exit.cc')
        Source('piecewise_type.cc')
        Source('tournament_type.cc')
        Source('tage_type.cc')
        Source('tage_exit.cc')
        Source('tage_binary.cc')
        Source('tournament_framework.cc')
        Source('tour_framework_binary.cc')
        Source('tour_framework_exit.cc')
        Source('global_exit.cc')
        Source('global_type.cc')
        Source('global_binary.cc')
        Source('local_type.cc')
        Source('local_exit.cc')
        Source('local_binary.cc')
        Source('twostage_framework.cc')
        Source('btb_new.cc')
        Source('history_tracker.cc');
	Source('hyst_btype.cc')
    
    if 'DistributedEdgeCPU' in env['CPU_MODELS']:
        Source('dist_ras.cc')
        Source('dist_tournament.cc')
        Source('dist_perceptron.cc')
        Source('dist_tournament_perceptron.cc')
        Source('dist_piecewise.cc')
	Source('dist_piecewise_exit.cc')
        Source('dist_piecewise_type.cc')
        Source('dist_tournament_type.cc')
        Source('dist_tage_type.cc')
        Source('dist_tage_exit.cc')
        Source('dist_tage_binary.cc')
        Source('dist_tournament_framework.cc')
        Source('dist_tour_framework_binary.cc')
        Source('dist_tour_framework_exit.cc')
        Source('dist_global_exit.cc')
        Source('dist_global_type.cc')
        Source('dist_global_binary.cc')
        Source('dist_local_type.cc')
        Source('dist_local_exit.cc')
        Source('dist_local_binary.cc')
        Source('dist_twostage_framework.cc')
        Source('dist_btb_new.cc')
        Source('dist_history_tracker.cc');
	Source('dist_hyst_btype.cc')
    
    TraceFlag('FreeList')
    TraceFlag('PiecewiseBP')
    TraceFlag('BPDEBUG')
    TraceFlag('HistoryTracker')
    TraceFlag('PredictorTable')

